#ifndef PUDGE_GRFX_COLOR_HPP
#define PUDGE_GRFX_COLOR_HPP

namespace pudge { namespace grfx {

	struct ALPHA { const static GLenum glenum = GL_RED; };

	struct RGBA { const static GLenum glenum = GL_RGBA; };

	struct RGB { const static GLenum glenum = GL_RGB; };

	template<class Enum, class Type> struct color{};

	template<class T> struct color<RGBA,T> : pudge::math::vec<4,T>
	{
		typedef RGBA format_type;
		typedef T value_type;
		color(const T r, const T g, const T b, const T a) 
			:	vec<4,T>(r,g,b,a) {}
		color() {}
	};

	template<class T> struct color<RGB,T> : pudge::math::vec<3,T>
	{
		typedef RGB format_type;
		typedef T value_type;
		color(const T r, const T g, const T b) 
			:	vec<3,T>(r,g,b) {}
		color() {}
	};

	template<class T> struct color<ALPHA,T>
	{
		typedef ALPHA format_type;
		typedef T value_type;
		T a;
		color(const T v) : a(v) {}
		color() {}
	};
}}

#endif